﻿Imports System.Runtime.Serialization

''' <summary>
''' Twitterのユーザーを表現します。
''' </summary>
''' <remarks></remarks>
<Serializable()> _
<DataContract()> _
Public Class TwitterUser
    Private _userID As Long
    ''' <summary>
    ''' ユーザーの固有IDを取得または設定します。
    ''' </summary>
    ''' <value>固有ID</value>
    ''' <returns>固有ID</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="id")> _
    Public Property UserID() As Long
        Get
            Return _userID
        End Get
        Set(ByVal value As Long)
            _userID = value
        End Set
    End Property

    Private _userName As String
    ''' <summary>
    ''' ユーザー名を取得または設定します。
    ''' </summary>
    ''' <value>ユーザー名</value>
    ''' <returns>ユーザー名</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="screen_name")> _
    Public Property UserName() As String
        Get
            Return _userName
        End Get
        Set(ByVal value As String)
            _userName = value
        End Set
    End Property

    Private _displayName As String
    ''' <summary>
    ''' 表示名を取得または設定します。
    ''' </summary>
    ''' <value>表示名</value>
    ''' <returns>表示名</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="name")> _
    Public Property DisplayName() As String
        Get
            Return _displayName
        End Get
        Set(ByVal value As String)
            _displayName = value
        End Set
    End Property

    Private _location As String
    ''' <summary>
    ''' 所在地を取得または設定します。
    ''' </summary>
    ''' <value>所在地</value>
    ''' <returns>所在地</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="location")> _
    Public Property Location() As String
        Get
            Return _location
        End Get
        Set(ByVal value As String)
            _location = value
        End Set
    End Property

    Private _iconUrl As String
    ''' <summary>
    ''' アイコンのURLを取得または設定します。
    ''' </summary>
    ''' <value>アイコンのURL</value>
    ''' <returns>アイコンのURL</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="profile_image_url")> _
    Public Property IconUrl() As String
        Get
            Return _iconUrl
        End Get
        Set(ByVal value As String)
            _iconUrl = value
        End Set
    End Property

    Private _description As String
    ''' <summary>
    ''' 説明を取得または設定します。
    ''' </summary>
    ''' <value>説明</value>
    ''' <returns>説明</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="description")> _
    Public Property Description() As String
        Get
            Return _description
        End Get
        Set(ByVal value As String)
            _description = value
        End Set
    End Property

    Private _currently As String
    ''' <summary>
    ''' 直近の発言を取得または設定します。
    ''' </summary>
    ''' <value>直近の発言</value>
    ''' <returns>直近の発言</returns>
    ''' <remarks></remarks>
    Public Property Currently() As String
        Get
            Return _currently
        End Get
        Set(ByVal value As String)
            _currently = value
        End Set
    End Property

    Private _language As String
    ''' <summary>
    ''' 言語を取得または設定します。
    ''' </summary>
    ''' <value>言語</value>
    ''' <returns>言語</returns>
    ''' <remarks></remarks> _
    Public Property Language() As String
        Get
            Return _language
        End Get
        Set(ByVal value As String)
            _language = value
        End Set
    End Property

    Private _isProtected As Boolean
    ''' <summary>
    ''' このユーザーが発言をプロテクトしているかを取得または設定します。
    ''' </summary>
    ''' <value>プロテクトしていればTrue,いなければFalse</value>
    ''' <returns>プロテクトしていればTrue,いなければFalse</returns>
    ''' <remarks></remarks>
    <DataMember(Name:="protected")> _
    Public Property IsProtected() As Boolean
        Get
            Return _isProtected
        End Get
        Set(ByVal value As Boolean)
            _isProtected = value
        End Set
    End Property

    Private _isFriend As Boolean
    ''' <summary>
    ''' ユーザーをフォローしているかどうかを取得または設定します。
    ''' </summary>
    ''' <value>フォローしていればTrue、していなければFalse</value>
    ''' <returns>フォローしていればTrue、していなければFalse</returns>
    ''' <remarks>
    ''' <see>TwitterStatus.User</see>では、常にFalseが返されます。
    ''' </remarks>
    <DataMember(Name:="following")> _
    Public Property IsFriend() As Boolean
        Get
            Return _isFriend
        End Get
        Set(ByVal value As Boolean)
            _isFriend = value
        End Set
    End Property

    Private _isFollower As Boolean
    ''' <summary>
    ''' ユーザーにフォローされているかを取得または設定します。
    ''' </summary>
    ''' <value>フォローされていればTrue、されていなければFalse</value>
    ''' <returns>フォローされていればTrue、されていなければFalse</returns>
    ''' <remarks>
    ''' <see>TwitterStatus.User</see>では、常にFalseが返されます。
    ''' </remarks>
    Public Property IsFollower() As Boolean
        Get
            Return _isFollower
        End Get
        Set(ByVal value As Boolean)
            _isFollower = value
        End Set
    End Property
End Class
